#include "UDPClient.hpp"

void Usage(std::string str)
{
    printf("Usage:\n\t%s %s %s\n",str.c_str(),"ip","port");
}

int main(int args,char* argv[])
{
    if(args!=3)
    {
        Usage(argv[0]);
        exit(1);
    }


    //利用多线程实现一个发收并行执行的逻辑
    //处理port和ip
    uint16_t serPort=atoi(argv[2]);
    std::string serIp=argv[1];

    std::unique_ptr<UDPClient> ptr(new UDPClient(serIp,serPort));
    ptr->start();
    while(true)
    {

    }


    //第一次测试代码
    // //创建套接字
    // int sock=socket(AF_INET,SOCK_DGRAM,0);
    // if(sock<0)
    // {
    //     perror("sock");
    //     exit(1);
    // }

    // //处理port和ip
    // uint16_t serPort=atoi(argv[2]);
    // std::string serIp=argv[1];

    // //填充字段
    // struct sockaddr_in server;
    // memset(&server,0,sizeof(server));
    // server.sin_family=AF_INET;
    // server.sin_port=htons(serPort);
    // server.sin_addr.s_addr=inet_addr(serIp.c_str());

    // //客户端不用显示绑定，在我们sendto，第一次发送时，操作系统帮我们自动bind
    // std::string message;
    // while(true)
    // {
    //     std::cerr<<"请输入信息:";
    //     std::getline(std::cin,message);
    //     if(message=="quit")
    //     {
    //         break;
    //     }
    //     sendto(sock,message.c_str(),message.size(),0,(struct sockaddr*)&server,sizeof(server));

    //     char buff[1024];
    //     memset(buff,0,sizeof(buff));
    //     struct sockaddr_in tmp;
    //     memset(&tmp,0,sizeof(tmp));
    //     socklen_t len=sizeof(tmp);
    //     recvfrom(sock,buff,sizeof(buff),0,(struct sockaddr*)&tmp,&len);
    //     printf("%s\n",buff);
    // }

    return 0;
}
